package edu.pe.cayetano.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.apache.commons.beanutils.DynaBean;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.framework.Configuration;
import edu.pe.cayetano.framework.DAOException;
import edu.pe.cayetano.model.to.UsuarioTO;
import edu.pe.cayetano.seccd.constantes.ConstantesMensajes;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;
import edu.pe.cayetano.util.EscribeLog;
import edu.pe.cayetano.util.UtilTipoDato;
import edu.pe.cayetano.util.Utilitario;

public class UsuarioDAO extends BaseDAO{

	
	public UsuarioDAO(Connection cnx) {
		super(cnx);
	}
	
	/**
	 * Metodo que obtiene los datos de un usuario
	 * */
	public BResult obtieneUsuario(String codigoUsuario) throws Exception {

		String 					schema			= Configuration.getSchemaDB();
		UsuarioTO 				usuarioTO	 	= null;
		PreparedStatement   	pstmt 		 	= null;
		ResultSet 				rs 			 	= null;
		BResult					ret				= null;
		try{
			
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT A.COD_USUARIO,C.COD_PERFIL,C.NOMBRE,A.ESTADO_ID,NUM_INTENTOS,C.ESTADO_ID, ");
			query.append(" TIMESTAMPDIFF(4,CHAR(CURRENT TIMESTAMP - FECHA_UlTIMO_LOGIN))");
			query.append(" FROM "+schema+"USUARIO A ");  
			query.append(" INNER JOIN "+schema+"PERFIL C");
			query.append(" ON C.COD_PERFIL=A.COD_PERFIL");
			query.append(" WHERE A.COD_USUARIO=?");
			
			System.out.println("[SECCD][UsuarioDAO][obtieneUsuario]:codigoUsuario:<"+codigoUsuario+">");
			System.out.println("[SECCD][UsuarioDAO][obtieneUsuario]:query:<"+query.toString()+">");
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,codigoUsuario);
			rs=pstmt.executeQuery();		
			if(rs.next()){
					usuarioTO=new UsuarioTO();
					usuarioTO.setCodigo(rs.getInt(1));
					usuarioTO.setPerfil(rs.getInt(2));
					usuarioTO.setNombrePerfil(rs.getString(3));
					usuarioTO.setEstado(rs.getString(4));
					usuarioTO.setNumIntentos(rs.getInt(5));		
					usuarioTO.setEstadoPerfil(rs.getString(6));		
					usuarioTO.setMinutosUltimoLogin(rs.getInt(7));
			}
			ret = new BResult();
			ret.setObject(usuarioTO);
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			System.out.println("[SECCD][UsuarioDAO][obtieneUsuario]:error generado por:"+e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][obtieneUsuario]:error generado por:"+e.getMessage());
				ret = new BResult();
				ret.setCode(ConstantesSECCD.ERROR_RET);
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	public BResult cambiaClave(int codigoUsuario, String password)throws Exception{
		
		boolean				exito		= true;
		PreparedStatement   pstmt 		= null;
		StringBuffer 		sb			= new StringBuffer();
		String 				schema		= Configuration.getSchemaDB();
		BResult				ret			= null;
		try{
			sb.append("UPDATE "+schema+"USUARIO SET PASSWORD=? where COD_USUARIO=?");
			System.out.println("[UsuarioDAO] cambiaClave:"+sb.toString());
			pstmt = getConnection().prepareStatement(sb.toString());	
			pstmt.setString(1,password);
			pstmt.setInt(2,codigoUsuario);
			pstmt.executeUpdate();
			exito=true;
			ret = new BResult();
			ret.setObject(exito);
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			System.out.println("[SECCD][UsuarioDAO][cambiaClave]:error generado por:"+e.getMessage());
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			throw new DAOException(e.getMessage());	
		}
		finally{
			try{pstmt.close();}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][cambiaClave]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	public BResult retornaUsuario(String codigoUsuario) throws Exception {

		String 					schema			= Configuration.getSchemaDB();
		UsuarioTO 			usuarioTO	 	= null;
		PreparedStatement   	pstmt 		 	= null;
		ResultSet 				rs 			 	= null;
		BResult					ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT COD_USUARIO,APE_PATERNO,APE_MATERNO,A.NOMBRE,USERNAME,PASSWORD,A.ESTADO_ID,A.COD_PERFIL"); 
			query.append(" FROM "+schema+"USUARIO A INNER JOIN "+schema+"PERFIL B");
			query.append(" ON A.COD_PERFIL=B.COD_PERFIL");
			query.append(" INNER JOIN "+schema+"ESTADO E ON E.ESTADO_ID=A.ESTADO_ID");
			query.append(" WHERE COD_USUARIO=?");
			System.out.println("[SECCD][UsuarioDAO][retornaUsuario]:query:"+query.toString());
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,codigoUsuario);
			rs=pstmt.executeQuery();		
			if(rs.next()){
					usuarioTO=new UsuarioTO();
					usuarioTO.setCodigo(rs.getInt(1));
					usuarioTO.setApePaterno(rs.getString(2));
					usuarioTO.setApeMaterno(rs.getString(3));
					usuarioTO.setNombre(rs.getString(4));
					usuarioTO.setUsername(rs.getString(5));
					usuarioTO.setPassword(rs.getString(6));
					usuarioTO.setEstado(rs.getString(7));
					usuarioTO.setPerfil(rs.getInt(8));
			}
			ret = new BResult();
			ret.setObject(usuarioTO);
			ret.setCode(ConstantesSECCD.EXITO_RET);
		}catch(Exception e){
			System.out.println("[SECCD][UsuarioDAO][retornaUsuario]:error generado por:"+e.getMessage());
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][obtieneUsuario]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	
	public BResult grabaEditaUsuario(DynaBean dyna) throws Exception {
		String 					schema			= Configuration.getSchemaDB();
		PreparedStatement   	pstmt 		 	= null;
		BResult					ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" UPDATE "+schema+"USUARIO SET APE_PATERNO=?,APE_MATERNO=?,");
			query.append(" NOMBRE=?,COD_PERFIL=?,ESTADO_ID=?,NUM_INTENTOS=0,USERNAME=?");
			query.append(" WHERE COD_USUARIO=?");
			System.out.println("[SECCD][UsuarioDAO][grabaEditaUsuario]:query:"+query.toString());
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,Utilitario.getPropertyDynaBean(dyna,"apePaterno"));
			pstmt.setString(2,Utilitario.getPropertyDynaBean(dyna,"apeMaterno"));
			pstmt.setString(3,Utilitario.getPropertyDynaBean(dyna,"nombre"));
			pstmt.setString(4,Utilitario.getPropertyDynaBean(dyna,"perfil"));
			pstmt.setString(5,Utilitario.getPropertyDynaBean(dyna,"estado"));
			pstmt.setString(6,Utilitario.getPropertyDynaBean(dyna,"username"));
			pstmt.setString(7,Utilitario.getPropertyDynaBean(dyna,"codigo"));

			pstmt.executeUpdate();		
			ret = new BResult();
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			EscribeLog.escribeLog("[UsuarioDAO]","grabaEditaUsuario",ConstantesSECCD.ERROR,e.getMessage());
			System.out.println("[SECCD][UsuarioDAO][grabaEditaUsuario]:error generado por:"+e.getMessage());
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
			}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][grabaEditaUsuario]:error generado por:"+e.getMessage());
				EscribeLog.escribeLog("[UsuarioDAO]","grabaEditaUsuario",ConstantesSECCD.ERROR,e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	
	public BResult grabaInsertaUsuario(DynaBean dyna,int codigo) throws Exception {
		String 					schema			= Configuration.getSchemaDB();
		PreparedStatement   	pstmt 		 	= null;
		BResult					ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" INSERT INTO "+schema+"USUARIO (COD_USUARIO,APE_PATERNO,APE_MATERNO,NOMBRE,USERNAME,PASSWORD,COD_PERFIL,ESTADO_ID,NUM_INTENTOS)");
			query.append(" values (?,?,?,?,?,?,?,?,?)");
			System.out.println("[UsuarioDAO] grabaInsertaUsuario: "+query.toString());
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setInt(1,codigo);
			pstmt.setString(2,Utilitario.getPropertyDynaBean(dyna,"apePaterno"));
			pstmt.setString(3,Utilitario.getPropertyDynaBean(dyna,"apeMaterno"));
			pstmt.setString(4,Utilitario.getPropertyDynaBean(dyna,"nombre"));
			pstmt.setString(5,Utilitario.getPropertyDynaBean(dyna,"username"));
			pstmt.setString(6,"123456");
			pstmt.setInt(7,UtilTipoDato.convierteStringEntero(Utilitario.getPropertyDynaBean(dyna,"perfil")));
			pstmt.setInt(8,1);
			pstmt.setInt(9,0);
			pstmt.executeUpdate();		
			ret = new BResult();
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			System.out.println("[SECCD][UsuarioDAO][grabaInsertaUsuario]:error generado por:"+e.getMessage());
			EscribeLog.escribeLog("[UsuarioDAO]","grabaInsertaUsuario",ConstantesSECCD.ERROR,e.getMessage());
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
			}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][grabaInsertaUsuario]:error generado por:"+e.getMessage());
				EscribeLog.escribeLog("[UsuarioDAO]","grabaEditaUsuario",ConstantesSECCD.ERROR,e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	/**
	 * Metodo que actualiza el numero de intentos de logeo fallidos realizados por un usuario
	 **/
	public BResult registraLoginFallido(int username,int numIntentos)throws Exception{
		PreparedStatement   pstmt 		= null;
		StringBuffer 		sb			= new StringBuffer();
		String 				schema		= Configuration.getSchemaDB();
		BResult				ret			= null;
		try{
			sb.append("UPDATE "+schema+"USUARIO SET NUM_INTENTOS=? WHERE COD_USUARIO=?");
			System.out.println("[SECCD][UsuarioDAO][registraLoginFallido]:query<"+sb.toString()+">");
			System.out.println("[SECCD][UsuarioDAO][registraLoginFallido]:cod_usuario<"+username+">");
			System.out.println("[SECCD][UsuarioDAO][registraLoginFallido]:numIntentos<"+numIntentos+">");
			pstmt = getConnection().prepareStatement(sb.toString());	
			pstmt.setInt(1,numIntentos);
			pstmt.setInt(2,username);
			pstmt.executeUpdate();
			ret = new BResult();
			ret.setCode(ConstantesSECCD.EXITO_RET);
			ret.setMessage(ConstantesMensajes.ERROR_CONTRASENA_INCORRECTA);
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			System.out.println("[SECCD][UsuarioDAO][registraLoginFallido]:error generado por:"+e.getMessage());
			throw new DAOException(e.getMessage());	
		}
		finally{
			try{pstmt.close();}
			catch(Exception e){
				ret = new BResult();
				ret.setCode(ConstantesSECCD.ERROR_RET);
				ret.setMessage(e.getMessage());
				System.out.println("[SECCD][UsuarioDAO][registraLoginFallido]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}

	/**
	 * Inactiva una cuenta de usuario
	 **/
	public BResult inactivaCuentaUsuario(int codigoUsuario)throws Exception{
		PreparedStatement   pstmt 		= null;
		StringBuffer 		sb			= new StringBuffer();
		String 				schema		= Configuration.getSchemaDB();
		BResult				ret			= null;
		try{
			sb.append("UPDATE "+schema+"USUARIO SET ESTADO_ID=? WHERE COD_USUARIO=?");
			System.out.println("[SECCD][UsuarioDAO][inactivaCuentaUsuario]:query<"+sb.toString()+">");
			System.out.println("[SECCD][UsuarioDAO][inactivaCuentaUsuario]:cod_usuario<"+codigoUsuario+">");
			pstmt = getConnection().prepareStatement(sb.toString());	
			pstmt.setInt(1,ConstantesSECCD.ESTADO_CUENTA_INACTIVA);
			pstmt.setInt(2,codigoUsuario);
			pstmt.executeUpdate();
			ret = new BResult();
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			System.out.println("[SECCD][UsuarioDAO][inactivaCuentaUsuario]:error generado por:"+e.getMessage());
			throw new DAOException(e.getMessage());	
		}
		finally{
			try{pstmt.close();}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][inactivaCuentaUsuario]:error generado por:"+e.getMessage());
				ret = new BResult();
				ret.setCode(ConstantesSECCD.ERROR_RET);
				ret.setMessage(e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	/**
	 * Resetea una cuenta de usuario
	 **/
	public BResult reseteaNumIntentos(int codigoUsuario)throws Exception{
		PreparedStatement   pstmt 		= null;
		StringBuffer 		sb			= new StringBuffer();
		String 				schema		= Configuration.getSchemaDB();
		BResult				ret			=  new BResult();;
		try{
			sb.append("UPDATE "+schema+"USUARIO SET NUM_INTENTOS=?,ESTADO_ID=? WHERE COD_USUARIO=?");
			System.out.println("[SECCD][UsuarioDAO][reseteaNumIntentos]:query<"+sb.toString()+">");
			System.out.println("[SECCD][UsuarioDAO][reseteaNumIntentos]:cod_usuario<"+codigoUsuario+">");
			pstmt = getConnection().prepareStatement(sb.toString());	
			pstmt.setInt(1,0);
			pstmt.setInt(2,1);
			pstmt.setInt(3,codigoUsuario);
			pstmt.executeUpdate();
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			System.out.println("[SECCD][UsuarioDAO][reseteaNumIntentos]:error generado por:"+e.getMessage());
			throw new DAOException(e.getMessage());	
		}
		finally{
			try{pstmt.close();}
			catch(Exception e){
				ret.setCode(ConstantesSECCD.ERROR_RET);
				ret.setMessage(e.getMessage());
				System.out.println("[SECCD][UsuarioDAO][reseteaNumIntentos]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}

	/**
	 * Actualiza la fecha del ultimo login
	 **/
	public BResult actualizaFechaUltimoLogin(int codigoUsuario)throws Exception{
		PreparedStatement   pstmt 		= null;
		StringBuffer 		sb			= new StringBuffer();
		String 				schema		= Configuration.getSchemaDB();
		BResult				ret			=  new BResult();;
		try{
			sb.append("UPDATE "+schema+"USUARIO SET FECHA_ULTIMO_LOGIN=CURRENT TIMESTAMP WHERE COD_USUARIO=?");
			System.out.println("[SECCD][UsuarioDAO][actualizaFechaUltimoLogin]:query<"+sb.toString()+">");
			pstmt = getConnection().prepareStatement(sb.toString());	
			pstmt.setInt(1,codigoUsuario);
			pstmt.executeUpdate();
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			System.out.println("[SECCD][UsuarioDAO][actualizaFechaUltimoLogin]:error generado por:"+e.getMessage());
			throw new DAOException(e.getMessage());	
		}
		finally{
			try{pstmt.close();}
			catch(Exception e){
				ret.setCode(ConstantesSECCD.ERROR_RET);
				ret.setMessage(e.getMessage());
				System.out.println("[SECCD][UsuarioDAO][actualizaFechaUltimoLogin]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	public BResult validaUsername(String username) throws Exception {

		String 					schema			= Configuration.getSchemaDB();
		UsuarioTO 			usuarioTO	 	= null;
		PreparedStatement   	pstmt 		 	= null;
		ResultSet 				rs 			 	= null;
		BResult					ret				= new BResult();
		String					exito		= "0";
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT NUM_INTENTOS,COD_PERFIL FROM "+schema+"USUARIO A ");
			query.append(" WHERE USERNAME=?");
			System.out.println("[UsuarioDAO] valida validaUsername:"+query.toString());
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,username);
			rs=pstmt.executeQuery();		
			if(rs.next()){
				usuarioTO=new UsuarioTO();
				usuarioTO.setNumIntentos(rs.getInt(1));
				usuarioTO.setPerfil(rs.getInt(2));
				ret.setCode(ConstantesSECCD.EXITO_RET);;
				ret.setObject(usuarioTO);
			}else{
				ret.setCode(ConstantesSECCD.ERROR_RET);
			}
		}catch(Exception e){
			System.out.println("[SECCD][UsuarioDAO][validaUsername]:error generado por:"+e.getMessage());
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
			throw new DAOException(e.getMessage());	
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][validaUsername]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	public int obtieneUltimoCodigoUsuario() throws Exception{

		PreparedStatement   pstmt 		 = null;
		ResultSet 			rs 			 = null;
		String 				schema		 = Configuration.getSchemaDB();
		int					codigo		 = 0;
		try{
				StringBuffer query  = new StringBuffer();
				query.append("SELECT COD_USUARIO FROM "+schema+"USUARIO ORDER BY 1 DESC LIMIT 1");
				pstmt = getConnection().prepareStatement(query.toString());
				rs=pstmt.executeQuery();			
				if(rs.next()){
					codigo = rs.getInt(1);
				}
				codigo = codigo+1;
			}catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][obtieneUltimoCodigoUsuario]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());
			}finally{
				try{
					try{pstmt.close();}catch(Exception e){
						System.out.println("[SECCD][UsuarioDAO][obtieneUltimoCodigoUsuario]:error generado por:"+e.getMessage());
					}
					try{rs.close();}catch(Exception e){
						System.out.println("[SECCD][UsuarioDAO][obtieneUltimoCodigoUsuario]:error generado por:"+e.getMessage());
					}
				}catch(Exception e1){}
			}
		return codigo;
	}
	
	public BResult validaUsernamexBaseDatos(String username) throws Exception {

		String 					schema			= Configuration.getSchemaDB();
		UsuarioTO 			usuarioTO	 	= null;
		PreparedStatement   	pstmt 		 	= null;
		ResultSet 				rs 			 	= null;
		BResult					ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT P.COD_PERFIL,P.NOMBRE,U.ESTADO_ID ");
			if(!ConstantesSECCD.DB_DB2.equalsIgnoreCase(Configuration.getConnectionDB())){
				query.append(",U.NUM_INTENTOS");
			}
			query.append("  FROM "+schema+"USUARIO U ");  
			query.append(" INNER JOIN "+schema+"PERFIL P");
			query.append(" ON U.COD_PERFIL=P.COD_PERFIL");
			query.append(" WHERE U.COD_USUARIO");
			System.out.println("[UsuarioDAO] query validaUsernamexBaseDatos:"+query.toString());
			
			
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,username);
			rs=pstmt.executeQuery();		
			if(rs.next()){
					usuarioTO=new UsuarioTO();
					usuarioTO.setCodigo(rs.getInt(1));
					usuarioTO.setApePaterno(rs.getString(2));
					usuarioTO.setApeMaterno(rs.getString(3));
					usuarioTO.setNombre(rs.getString(4));
					usuarioTO.setUsername(rs.getString(5));
					usuarioTO.setPassword(rs.getString(6));
					usuarioTO.setPerfil(rs.getInt(7));
					usuarioTO.setNombrePerfil(rs.getString(8));
					usuarioTO.setNombreCompleto(rs.getString(4)+" "+rs.getString(2));
					usuarioTO.setNombrePerfil(rs.getString(8));
					usuarioTO.setEstado(rs.getString(9));
					if(!ConstantesSECCD.DB_DB2.equalsIgnoreCase(Configuration.getConnectionDB())){
						usuarioTO.setNumIntentos(rs.getInt(10));
					}else{
						usuarioTO.setNumIntentos(0);
					}
			}
			ret = new BResult();
			ret.setObject(usuarioTO);
			ret.setCode(ConstantesSECCD.EXITO_RET);;
		}catch(Exception e){
			System.out.println("[SECCD][UsuarioDAO][validaUsernamexBaseDatos]:error generado por:"+e.getMessage());
			ret = new BResult();
			ret.setCode(ConstantesSECCD.ERROR_RET);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				System.out.println("[SECCD][UsuarioDAO][validaUsernamexBaseDatos]:error generado por:"+e.getMessage());
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
}
